package com.example.houselease.repo;

import com.example.houselease.pojo.vo.AdminDetailVO;
import com.example.houselease.pojo.vo.AdminListVO;

import java.io.Serializable;
import java.util.List;

/**
 * 管理员数据 redis缓存配置接口
 * @author sf
 * @version 0.0.1
 * */
public interface IAdminRedisRepository {

    /**
     * 声明redis插入单个数据，key前缀
     * */
    String ADMIN_ITEM_KEY_PREFIX = "admin:item:";

    /**
     * 声明redis插入所有数据，key
     * */
    String ADMIN_LIST_KEY = "admin:list";

    /**
     * 声明redis存储的所有的key数据
     * */
    String ADMIN_ALL_KEYS = "admin:all-keys";

    /**
     * 所有数据列表
     * @return 数据
     * */
    List<AdminListVO> list();

    /**
     * 数据列表 指定具体数量
     * @param start 数据查询的起始下标
     * @param end 数据查询的最终下标
     * @return 数据
     * */
    List<AdminListVO> list(int start, int end);

    /**
     * 清除redis管理员缓存
     * */
    void deleteAll();

    /**
     * 向redis中，插入所有管理员数据
     * @param adminListVOS 管理员数据
     * */
    void save(List<AdminListVO> adminListVOS);

    /**
     * 向redis中，插入每个管理员详情数据
     * @param adminDetailVO 管理员详情数据
     * */
    void save(AdminDetailVO adminDetailVO);

    /**
     * 获取单个数据
     *
     * @return
     */
    AdminDetailVO get(Long id);
}
